<?php
class AuthController extends Zend_Controller_Action
{
    public function init()
    {

    }

    public function indexAction()
    {
        // Redireciona para o login
        $this->_redirect('auth/login');
    }

    public function loginAction()
    {
        // Instancia o formulário de login
        $objFormLogin = new Foxsis_Form_Login();
        $this->view->objFormLogin = $objFormLogin;

        // Verifica se foi submetido via POST
        if( !$this->_request->isPost() )
            return false;

        // Obtém os dados passados via POST
        $data = $this->_request->getPost();

        // Se os dados forem validos
        if( !$objFormLogin->isValid($data))
            return false;

        // Cria uma instancia de Zend_Auth
        $objAuth = Zend_Auth::getInstance();

        /**
         * Instancia o Auth Db Table Adapter
         *
         * Quando se instancia este objeto, precisamos informar as configurações
         * do BD, nome da tabela onde os dados de login estão, o campo do nome
         * do usuário, e o campo da senha na tabela.
         */
        $authAdapter = new Zend_Auth_Adapter_DbTable(
                Zend_Registry::get( 'db' ),
                'usuario',
                'login',
                'senha',
                'md5(?)'
        );

        // Configura as credencias user_login e user_password informadas pelo usuário
        $authAdapter->setIdentity( $data['login'] )->setCredential( $data['senha']);

        // Tenta autenticar o usuário
        $result = $objAuth->authenticate($authAdapter);

        /**
         * Se o usuário for autenticado redireciona para a index e grava seu login,
         * caso contrário exibe uma mensagem de alerta na página
         */
        if ( $result->isValid() ) :

            /**
             * Pega os dados do usuário, omitindo a senha
             * http://framework.zend.com/manual/en/zend.auth.adapter.dbtable.html
             */
            $authData = $authAdapter->getResultRowObject( null, 'senha' );

            // Armazena os dados do usuário
            $objAuth->getStorage()->write( $authData );

            $this->_helper->FlashMessenger('Login efetuado com sucesso!');
            return $this->_helper->redirector->goToRoute( array('controller' => 'index'), null, true);
            
        else :
            $this->_helper->FlashMessenger('Os dados informados (login e/ou senha) não são válidos.');
            $this->_redirect('/auth/login');
            
        endif;
    }

    public function logoutAction()
    {
        $objAuth = Zend_Auth::getInstance();
        // Limpa a autenticação
        $objAuth->clearIdentity();
        return $this->_helper->redirector('index');
    }
}